package com.itcode.anno;

import com.itcode.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

@Documented //元注解
@Target({ElementType.FIELD}) //元注解 表示注解应该添加到哪里，此处为只能添加到属性
@Retention(RetentionPolicy.RUNTIME) //元注解 表示在哪个阶段会被保留，这里在运行时阶段进行保留
@Constraint(
        validatedBy = {StateValidation.class} //指定提供校验规则的类
)

public @interface State {

    //提供校验失败之后的提示信息
    String message() default "State 参数的值只能是已发布或者草稿";

    Class<?>[] groups() default {}; //指定分组

    Class<? extends Payload>[] payload() default {}; //负载，获取到State注解的附加信息
}
